package com.szrt.java.day20170113.demo01;

import java.lang.reflect.Field;

/**
 * 使用反射的方式得到一个类的属性
 * 
 * 使用反射的方式知道随便传类的全路径名：
 * "com.szrt.java.day20170113.demo01.Student"
 * "com.szrt.java.day20170113.demo01.Teacher"
 * 告诉你这个类中有几个属性
 *
 */

public class FieldTest {

	public static void main(String[] args) throws Exception {
		
		//1 只要是玩反射，第一步就是得到Class的一个对象，拿到硬盘上一个具体的.class文件
		// ? 表示里面放什么东西 不能够  编译器
		String leiming = "com.szrt.java.day20170113.demo01.Student";
		
		printField(leiming);
		
	}
	
	
	public static void printField(String lei) throws Exception{
		
		//1 只要是玩反射，第一步就是得到Class的一个对象，拿到硬盘上一个具体的.class文件
		// ? 表示里面放什么东西 不能够，最好不要写死 这样放什么类，就不知道  编译器
		Class<?> clazz = Class.forName(lei);
		
		//当我打印clazz 这个东西是一个类： 运行时类
		System.out.println(clazz);
		
		Field[] shuxings = clazz.getDeclaredFields();
		
		System.out.println(shuxings.length);
		
		for(int index =0;index<shuxings.length;index++){
			System.out.println(shuxings[index].getName()+" : "+shuxings[index].hashCode());
		}
		
	}
	
}
